Skip to main content

Datenpersistenz

Die Lebensdauer von Variablen und deren Daten reicht vom Zeitpunkt, an dem eine Variable erzeugt wird, bis zu dem Zeitpunkt, zu dem sie gelöscht und ihr Speicherplatz wieder freigegeben wird. Der Zeitpunkt der Variablenerzeugung, Initialisierung oder Instanzierung hängt vom deklarierten Gültigkeitsbereich ab. Der Zeitpunkt der Speicherfreigabe üblicherweise auch. Beispielsweise wird der Speicher von globalen Variablen mit Beenden der Applikation freigegeben.

Sie können Daten länger als üblich erhalten. Dafür stehen Ihnen in CODESYS folgende Mechanismen zur Verfügung.

Mechanismen zur Datenerhaltung

  • (A): Persistente Globale Variablenliste_cds_icon_persistent_variables_configuration.png mit dem Schlüsselwort PERSISTENT RETAIN

    Die persistenten Variablen behalten bei einem erneuten Laden der Applikation ihren Wert. Auch nach einem Download, Warmstart, oder Kaltstart werden die Werte wiederhergestellt.

  • (B): Retain-Variablen mit dem Schlüsselwort RETAIN

    Die Retain-Variablen behalten ihren Wert nach einem Warmstart, nicht aber bei einem erneuten Laden der Applikation, einem Download oder Kaltstart.

  • (C): Variablen des Persistence Managers des CODESYS Application Composer

    Die Variablen des Persistence Managers werden in einer externen Datei gesichert.

  • (D): Rezepturvariablen

    Rezepturvariablen und ihre Werten werden in der Rezepturdatei gesichert.

Mechanismen im Vergleich

Welcher Mechanismus ist bei welchem Anwendungsfall geeignet? In der Tabelle werden einige übliche Anwendungsfälle betrachtet. Die konkreten Beispiele beziehen sich auf eine Haussteuerung.

Tabelle 6. Gegenüberstellung von Mechanismen und Anwendungsfällen

Anwendungsfall

(A) Persistente Variablen

(B) Retain-Variablen

(c) Variablen des Persistence Managers

(D) Rezepturvariablen

1

Die Applikation muss Geräteeinstellungen erhalten.

Beispiel: Die Haussteuerung muss nach einem Stromausfall die Information, wie lange eine Jalousie für ihr Hochfahren benötigt, zur Verfügung haben.

Geeignet1

Bevorzugter Anwendungsfall

Sie können in diesem Fall statt persistenter Variablen auch Retain-Variablen verwenden. Das ist bei Variablen vorteilhaft, deren Deklaration oft geändert wird.

Geeignet

Bevorzugter Anwendungsfall

Retain-Variablen sind vorteilhaft, wenn deren Deklarationen oft geändert werden.

Geeignet2

Vorteilhaft bei Steuerungen, die über keine Hardwareunterstützung verfügen

Spezielle Funktionalitäten wie Double File Buffering ermöglichen dies.

Möglich, aber sehr umständlich und deshalb nicht empfehlenswert

2

Die Applikation muss Werte auch nach Programmänderungen oder -erweiterungen erhalten.

2a: Seltene Erweiterungen

Beispiel: Ein Applikationsprogrammierer erweitert das Programm um einen neuen Schalter und baut ein neues Licht ein. Die Haussteuerung muss bis dahin gesicherte Werte danach noch zur Verfügung haben.

Geeignet1

Bevorzugter Anwendungsfall

Geeignet

Geeignet2

Möglich, aber umständlich

2b: Freiere Änderungen, auch Löschen oder Ändern des Datentyps von Variablen

Die Haussteuerung läuft und ist persistiert. Wenn ein Applikationsprogrammierer die Steuerung um eine neue Funktionalität und deswegen in einem Funktionsbaustein um eine weitere persistente Variable erweitert, müssen die bis dahin gesicherten Werte erhalten bleiben. Beispielsweise wird das Programm in einem FB um eine Variable, die das automatische Ausschalten einer bisher ungesteuerten Lampe nach einer bestimmten Zeit steuert, erweitert. Die Haussteuerung muss nach der Erweiterung die Zeiten aller gesteuerten Lampen zur Verfügung haben.

Nicht geeignet

Geeignet

Daten von Retain-Variablen bleiben nach einem Online-Change möglichst erhalten.

Geeignet, soweit möglich 2

Bevorzugter Anwendungsfall

Möglich, wenn textuell, aber umständlich

2c: Die Applikation muss Werte nach einem Download erhalten.

Geeignet

Nicht geeignet

Geeignet

Geeignet

3

Die Applikation muss unterschiedliche Wertesätze verwenden können.

Beispiel: Die Betriebseinstellungen für Sommer, Winter und Urlaub müssen gespeichert und nach Bedarf wieder eingespielt werden können.

Nicht geeignet

Nicht geeignet

Nicht geeignet

Geeignet

Bevorzugter Anwendungsfall

4

Die Applikation muss Einstellungen von einem anderen System verwenden können.

Das Übertragen von Einstellungen auf eine andere Anlage, die ähnliche Variablen verwendet, muss möglich sein.

Nicht geeignet

Nicht geeignet

Geeignet2

Geeignet3

5

Die Applikation muss menschenlesbare Daten zur Verfügung stellen.

Der Benutzer muss die Daten lesen, vergleichen und editieren können.

Nicht geeignet

Nicht geeignet

Geeignet2

Geeignet3



1 Nachteil: Nur möglich, wenn das Laufzeitsystem diesen Mechanismus unterstützt und ein NVRam-Speicher oder USV vorhanden ist. Vorteil: Schnelligkeit; empfohlener Anwendungsfall: 1 und 2a

2 Nachteil: Im Fall einer großen Variablenmenge (> 10000) ist mit langen Wartezeiten bei einer Initialisierung und einem Shutdown zu rechnen. Vorteil: Keine spezielle Speicherausstattung ist nötig; Werteerhalt besteht auch bei Änderungen, Erweiterungen oder Löschungen.

3 Vorteil: Extern bearbeitbar, Übertragbarkeit. Nachteil: Umständlich

Lebensdauer von Variablen bei Aufruf von Onlinebefehlen

Benutzereingaben im Menü Online

Variable mit üblicher Lebensdauer

Weder RETAIN noch PERSISTENT

RETAIN

PERSISTENT

RETAIN PERSISTENT

PERSISTENT RETAIN

Befehl Online-Change

x

x

x

Befehl Reset warm

i

x

x

Befehl Reset kalt

i

i

x

Befehl Laden

i

i

x 1

Befehl Reset Ursprung

i

i

i

x : Die Variable behält ihren Wert.

i : Die Variable wird initialisiert.

1 Hinweis: Zur Struktur von persistenten Daten beachten Sie bitte die Informationen unter „Mechanismus beim Download“.

Lebensdauer von Variablen beim Laden einer Bootapplikation

Die Werte von normalen Variablen verlieren ihren Wert und werden neu initialisiert.

Die Werte von persistenten Variablen bleiben erhalten,

  • wenn die Struktur der persistenten Variablen im Speicher zur Struktur in der persistenten Datenliste passt.

  • wenn die persistenten Daten nur erweitert wurden. In diesem Fall werden nur die neu hinzugekommenen Variablen mit ihren Standardwerten gesetzt.

Die Werte von Retain-Variablen bleiben erhalten,

  • wenn die Struktur der Retain-Variablen im Speicher zur Struktur in der persistenten Datenliste passt.

  • wenn die Retain-Variablen zur Applikation passen (GUID muss übereinstimmen).

Wenn beim Booten der Applikation die Voraussetzungen für das Wiederherstellen der Werte von Retain-Variablen und persistenten Variablen nicht erfüllt sind, erfolgt ein „Retain mismatch“. Die Reaktion auf diese Unstimmigkeit ist in der Dokumentation des Hardwareherstellers beschrieben.

Für weitere Informationen siehe: Daten mit persistenten Variablen erhalten